Point-in-Time Recovery (PITR) হল একটি ডেটাবেস পুনরুদ্ধারের প্রক্রিয়া, যার মাধ্যমে আপনি ডেটাবেসের একটি নির্দিষ্ট সময়ে বা পয়েন্টে ডেটাবেসের অবস্থা ফিরিয়ে আনতে পারেন। এটি সাধারণত ডেটাবেসের বিপর্যয় বা ডেটা ক্ষতির পর পুনরুদ্ধার করার জন্য ব্যবহৃত হয়। PITR হল খুবই গুরুত্বপূর্ণ যখন আপনাকে সিস্টেমে একটি নির্দিষ্ট সময়ের পূর্ববর্তী অবস্থায় ফিরে যেতে হয়, যেমন যখন কোনো ত্রুটি বা ভুল ইনসার্ট/আপডেট/ডিলিট করা হয়।
PITR সাধারণত binary logs (বাইনরি লগ) ব্যবহার করে কাজ করে, যা MySQL এর মধ্যে ঘটে এমন সমস্ত ট্রানজেকশন (ইনসার্ট, আপডেট, ডিলিট) রেকর্ড করে।
PITR এর প্রক্রিয়া
PITR সাধারণত তিনটি প্রধান স্টেপে কাজ করে:
- Full Backup: প্রথমে, একটি সম্পূর্ণ ব্যাকআপ (full backup) নেওয়া হয় যা ডেটাবেসের বর্তমান অবস্থা ধারণ করে। এটি ডেটাবেস পুনরুদ্ধারের ভিত্তি।
- Binary Logs: এরপর, binary logs ব্যবহার করে আপনি ডেটাবেসের যে সময় থেকে পুনরুদ্ধার করতে চান, সেই সময় পর্যন্ত সব ট্রানজেকশন লোগ করে রাখবেন।
- Recovery: পরবর্তীতে, নির্দিষ্ট সময় (point-in-time) পর্যন্ত সমস্ত ট্রানজেকশন পুনরুদ্ধার করা হয়, যা এই পয়েন্টে ডেটাবেসকে ফিরিয়ে আনবে।
PITR এর জন্য প্রয়োজনীয় প্রস্তুতি
1. সাম্প্রতিক বাইনারি লগ সক্রিয় করা
PITR কার্যকর করার জন্য আপনাকে প্রথমে binary logging সক্রিয় করতে হবে। MySQL এ বাইনরি লগ সক্রিয় করতে নিচের কনফিগারেশন ব্যবহার করুন:
[mysqld]
log-bin=mysql-bin
server-id=1
binlog-do-db=your_database_name
এটি আপনার my.cnf (বা my.ini) কনফিগারেশন ফাইলে যোগ করতে হবে। এরপর MySQL সার্ভার রিস্টার্ট করুন:
sudo service mysql restart
2. ডেটাবেস ব্যাকআপ নেওয়া
প্রথমে, একটি পূর্ণ (full) ব্যাকআপ নিতে হবে, যা PITR-এর জন্য ভিত্তি হিসেবে ব্যবহৃত হবে। MySQL এর mysqldump কমান্ড ব্যবহার করে ব্যাকআপ নিতে পারেন:
mysqldump -u root -p --all-databases --single-transaction > full_backup.sql
এই কমান্ডটি সমস্ত ডেটাবেসের একটি পূর্ণ ব্যাকআপ তৈরি করবে।
3. বাইনরি লগের মনিটরিং
আপনার MySQL সার্ভারে সমস্ত ট্রানজেকশন বাইনরি লগে লেখা হচ্ছে কিনা তা নিশ্চিত করতে হবে। আপনি SHOW BINARY LOGS কমান্ড ব্যবহার করে সেগুলি দেখতে পারেন:
SHOW BINARY LOGS;
PITR এর জন্য পুনরুদ্ধার প্রক্রিয়া
- ব্যাকআপ রিস্টোর করা
প্রথমে, ব্যাকআপ করা ফাইলটি রিস্টোর করুন:
mysql -u root -p < full_backup.sql
এটি ব্যাকআপ ফাইল থেকে সমস্ত ডেটা পুনরুদ্ধার করবে।
- বাইনরি লগ ফাইল রিস্টোর করা
আপনি যে পয়েন্টে ডেটাবেস পুনরুদ্ধার করতে চান, সেই নির্দিষ্ট সময় পর্যন্ত সমস্ত বাইনরি লগ ফাইলগুলো পুনরুদ্ধার করতে হবে। এজন্য নিচের কনফিগারেশন ব্যবহার করা হবে:
mysqlbinlog mysql-bin.000001 mysql-bin.000002 > recovery.sql
এটি নির্বাচিত বাইনরি লগগুলি একত্রিত করে একটি নতুন ফাইল তৈরি করবে যা পুনরুদ্ধারের জন্য ব্যবহার করা যাবে।
- ট্রানজেকশন পুনরুদ্ধার করা
এখন, আপনি যে নির্দিষ্ট সময় পর্যন্ত ডেটাবেস পুনরুদ্ধার করতে চান, সেই সময় পর্যন্ত পুনরুদ্ধারের জন্য পুনরুদ্ধার স্ক্রিপ্টটি চালাতে হবে:
mysql -u root -p < recovery.sql
এটি বাইনরি লগ থেকে সমস্ত ট্রানজেকশন পুনরুদ্ধার করবে, যতটুকু প্রয়োজন।
PITR এর কার্যকারিতা
- ডেটার পুনরুদ্ধার: যদি কোনো ভুল ট্রানজেকশন বা ডেটার ক্ষতি ঘটে, তবে PITR ব্যবহার করে নির্দিষ্ট সময়ে ফিরিয়ে আনা সম্ভব।
- ডেটাবেসের অখণ্ডতা: PITR ট্রানজেকশন লেভেলে ডেটার অখণ্ডতা বজায় রাখে এবং একটি নির্দিষ্ট সময়ের আগে সমস্ত ট্রানজেকশন পুনরুদ্ধার করা যায়।
- নির্ভরযোগ্য ব্যাকআপ: PITR নিশ্চিত করে যে ডেটাবেসের একটি নির্দিষ্ট সময়ের পয়েন্টে সঠিক এবং কার্যকর ব্যাকআপ রয়েছে।
- উচ্চ স্বতঃফলন: আপনার ডেটাবেস পুনরুদ্ধার করার জন্য আপনি শুধুমাত্র বাইনরি লগগুলো ব্যবহার করতে পারবেন, যা সাধারণ ব্যাকআপের তুলনায় অধিক কার্যকর এবং দ্রুত হতে পারে।
PITR এর সুবিধা এবং সীমাবদ্ধতা
সুবিধা:
- লচিকতা: আপনি নির্দিষ্ট সময়ে ডেটাবেস পুনরুদ্ধার করতে পারবেন।
- সার্ভার বিপর্যয়ের পরে ডেটা পুনরুদ্ধার: সার্ভার ক্র্যাশ বা ডেটা ক্ষতির পর পুনরুদ্ধার সহজ হয়।
- পুনরুদ্ধারের নির্ভরযোগ্যতা: PITR নিশ্চিত করে যে সমস্ত ট্রানজেকশন সঠিকভাবে পুনরুদ্ধার করা হয়েছে।
সীমাবদ্ধতা:
- ব্যাকআপের জন্য সময়সীমা: এটি কার্যকর করতে পূর্ববর্তী পূর্ণ ব্যাকআপ থাকতে হবে।
- পুনরুদ্ধার প্রক্রিয়া সময়সাপেক্ষ: পুনরুদ্ধারের জন্য পুরো বাইনরি লগ সিকোয়েন্স ফলো করতে হতে পারে, যা সময়সাপেক্ষ হতে পারে।
- বাইনরি লগ ফাইলের মনিটরিং: আপনাকে নিয়মিতভাবে বাইনরি লগ ফাইলের সঠিক কনফিগারেশন এবং মনিটরিং করতে হবে।
সারাংশ
Point-in-Time Recovery (PITR) একটি গুরুত্বপূর্ণ ডেটাবেস পুনরুদ্ধার পদ্ধতি যা আপনাকে নির্দিষ্ট সময়ে ডেটাবেসের অবস্থা পুনরুদ্ধার করতে সাহায্য করে। এটি full backups এবং binary logs ব্যবহার করে কাজ করে, যা ডেটাবেসে ঘটিত সকল পরিবর্তন রেকর্ড করে। PITR ব্যবহারের মাধ্যমে আপনি ডেটা হারানোর পরও নির্দিষ্ট সময়ের অবস্থা ফিরে পেতে পারেন, তবে সঠিক প্রস্তুতি এবং মনিটরিং প্রয়োজন।
Read more